home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Muzyka / Edytory sampli (probek dzwieku) / ZynAddSubFX_2.2.0 / Setup_ZynAddSubFX-2.2.0.exe / source code / Effects / Reverb.h < prev   
C/C++ Source or Header  |  2005-03-14  |  3KB  |  128 lines

  1. /*
  2.   ZynAddSubFX - a software synthesizer
  3.  
  4.   Reverb.h - Reverberation effect
  5.   Copyright (C) 2002-2005 Nasca Octavian Paul
  6.   Author: Nasca Octavian Paul
  7.  
  8.   This program is free software; you can redistribute it and/or modify
  9.   it under the terms of version 2 of the GNU General Public License 
  10.   as published by the Free Software Foundation.
  11.  
  12.   This program is distributed in the hope that it will be useful,
  13.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.   GNU General Public License (version 2) for more details.
  16.  
  17.   You should have received a copy of the GNU General Public License (version 2)
  18.   along with this program; if not, write to the Free Software Foundation,
  19.   Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  20.  
  21. */
  22.  
  23. #ifndef REVERB_H
  24. #define REVERB_H
  25.  
  26.  
  27. #include "../globals.h"
  28. #include "../DSP/AnalogFilter.h"
  29. #include "Effect.h"
  30.  
  31. #define REV_COMBS 8
  32. #define REV_APS 4
  33.  
  34. class Reverb:public Effect {
  35.     public:
  36.     Reverb(int insertion,REALTYPE *efxoutl_,REALTYPE *efxoutr_);
  37.     ~Reverb();
  38.     void out(REALTYPE *smps_l,REALTYPE *smps_r);
  39.     void cleanup();
  40.  
  41.         void setpreset(unsigned char npreset);
  42.     void changepar(int npar,unsigned char value);
  43.     unsigned char getpar(int npar);
  44.  
  45.     private:
  46.     //Parametrii
  47.     //Amount of the reverb,
  48.     unsigned char Pvolume;
  49.  
  50.     //LefT/Right Panning
  51.     unsigned char Ppan;
  52.  
  53.     //duration of reverb
  54.     unsigned char Ptime;
  55.  
  56.     //Initial delay 
  57.     unsigned char Pidelay;
  58.  
  59.     //Initial delay feedback
  60.     unsigned char Pidelayfb;
  61.  
  62.     //delay between ER/Reverbs
  63.     unsigned char Prdelay;
  64.  
  65.     //EarlyReflections/Reverb Balance
  66.     unsigned char Perbalance;
  67.  
  68.     //HighPassFilter 
  69.     unsigned char Plpf;
  70.  
  71.     //LowPassFilter
  72.     unsigned char Phpf;
  73.  
  74.     //Low/HighFrequency Damping
  75.     unsigned char Plohidamp;// 0..63 lpf,64=off,65..127=hpf(TODO)
  76.  
  77.     //Reverb type
  78.     unsigned char Ptype;
  79.  
  80.     //Room Size
  81.     unsigned char Proomsize;
  82.  
  83.     //parameter control
  84.     void setvolume(unsigned char Pvolume);
  85.     void setpan(unsigned char Ppan);
  86.     void settime(unsigned char Ptime);
  87.     void setlohidamp(unsigned char Plohidamp);
  88.     void setidelay(unsigned char Pidelay);
  89.     void setidelayfb(unsigned char Pidelayfb);
  90.     void sethpf(unsigned char Phpf);
  91.     void setlpf(unsigned char Plpf);
  92.     void settype(unsigned char Ptype);
  93.     void setroomsize(unsigned char Proomsize);
  94.     
  95.     REALTYPE pan,erbalance;
  96.     //Parametrii 2    
  97.     int lohidamptype;//0=disable,1=highdamp(lowpass),2=lowdamp(highpass)
  98.     int idelaylen,rdelaylen;
  99.     int idelayk;
  100.     REALTYPE lohifb,idelayfb,roomsize,rs;//rs is used to "normalise" the volume according to the roomsize
  101.     int comblen[REV_COMBS*2];        
  102.     int aplen[REV_APS*2];
  103.     
  104.     //Valorile interne
  105.     
  106.     REALTYPE *comb[REV_COMBS*2];
  107.     
  108.     int combk[REV_COMBS*2];
  109.     REALTYPE combfb[REV_COMBS*2];//feedback-ul fiecarui filtru "comb"
  110.     REALTYPE lpcomb[REV_COMBS*2];//pentru Filtrul LowPass
  111.  
  112.     REALTYPE *ap[REV_APS*2];
  113.     
  114.     int apk[REV_APS*2];
  115.     
  116.     REALTYPE *idelay;
  117.     AnalogFilter *lpf,*hpf;//filters
  118.     REALTYPE *inputbuf;
  119.     
  120.     void processmono(int ch,REALTYPE *output);
  121. };
  122.  
  123.  
  124.  
  125.  
  126. #endif
  127.  
  128.